package com.example.springboot.service;

import cn.hutool.core.lang.Dict;
import com.example.springboot.common.Page;

import java.math.BigDecimal;
import java.util.List;

/**
 * 店铺表(Store)表服务接口
 *
 * @author makejava
 * @since 2024-01-13 17:16:26
 */
public interface StoreService {

    /**
     * 登录
     *
     * @param account
     * @return
     */
    Store login(Account account);

    /**
     * 注册
     *
     * @param account
     * @return
     */
    Store register(Account account);

    /**
     * 找回密码
     *
     * @param account
     */
    void findPassword(Account account);

    /**
     * 获取所有商家信息
     *
     * @return
     */
    List<Store> selectAll();


    /**
     * 根据ID删除
     *
     * @param id
     */
    void deleteById(Integer id);


    /**
     * 根据ID更新信息
     *
     * @param store
     */
    void updateById(Store store);

    /**
     * 条件查询
     *
     * @param username
     * @param name
     * @param phone
     * @param status
     * @return
     */
    List<Store> selectByManyCondition(String username, String name, String phone, Integer status);

    /**
     * 条件查询 分页查询
     *
     * @param currentPage
     * @param pageSize
     * @return
     */
    Page<Store> selectByPage(Integer currentPage, Integer pageSize);


//    /**
//     * 分页查询
//     * @param currentPage
//     * @param pageSize
//     * @param username
//     * @param name
//     * @param phone
//     * @param email
//     * @return
//     */
//    Page<Store> selectByManyConditionInpage(Integer currentPage, Integer pageSize, String username, String name, String phone, String email);

    /**
     * 分页查询
     *
     * @param currentPage
     * @param pageSize
     * @param username
     * @param name
     * @param phone
     * @param status
     * @return
     */
    Page<Store> selectByManyConditionInpage(Integer currentPage, Integer pageSize, String username, String name, String phone, Integer status);


    /**
     * 分页查询
     *
     * @param currentPage
     * @param pageSize
     * @param username
     * @param name
     * @param phone
     * @return
     */
    Page<Store> selectByManyConditionNoStatusInpage(Integer currentPage, Integer pageSize, String username, String name, String phone);


    /**
     * 批量删除
     *
     * @param ids
     */
    void deleteByIds(List<Integer> ids);


    /**
     * 添加商家
     *
     * @param store
     */
    void addStore(Store store);

    /**
     * 根据ID查询
     *
     * @param id
     * @return
     */
    Store selectSimpleById(Integer id);

    /**
     * 加载所有的商家
     *
     * @return
     */
    List<Store> loadAllStore();

    long getTotal();

    List<Store> storeTop10();

    BigDecimal[] getTodayInfo(Integer id);

    List<Dict> productCharts(Integer id);

    Store selectById(Integer id);

    void changePassword(Account account);
}
